package com.coocaa.aries.jmeter.service;


import com.coocaa.aries.core.base.model.PageResultModel;
import com.coocaa.aries.core.base.model.R;
import com.coocaa.aries.jmeter.entity.ExtTestCaseInfoEntity;
import com.coocaa.aries.jmeter.model.JmxUploadResult;
import com.coocaa.aries.jmeter.model.query.ExtTestCaseQueryModel;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author : bijiahao
 * @date : 2019/4/9.
 * @description: 测试用例 service接口
 */
public interface IExtTestCaseService {

    /**
     * 获取分页数据
     *
     * @return
     */
    PageResultModel<ExtTestCaseInfoEntity> getPageResult(ExtTestCaseQueryModel model);

    /**
     * 创建
     *
     * @param id
     */
    R create(Integer id) throws Exception;

    /**
     * 取消
     *
     * @param id
     */
    R cancel(Integer id);
    /**
     * 删除
     *
     * @param id
     */
    R remove(Integer id);

    /**
     * 预览PDF
     *
     * @param id
     */
    void previewPdf(HttpServletResponse response, Integer id);

    /**
     * 预览PDF前的校验
     *
     * @param id
     * @return
     */
    R checkBeforePreviewPdf(Integer id);

    /**
     * 下载报告
     *
     * @param response
     * @param id
     */
    void downloadReport(HttpServletResponse response, Integer id);

    /**
     * 下载报告前的校验
     *
     * @param id
     * @return
     */
    R checkBeforeDownReport(Integer id);


    /**
     * 保存
     *
     * @param list
     */
    void save(List<ExtTestCaseInfoEntity> list);

    /**
     * 获取执行日志
     *
     * @param id
     * @return
     */
    R getLog(Integer id);

    /**
     * 上传测试用例jmx文件
     *
     * @param request
     * @return
     */
    List<JmxUploadResult> uploadJmxFile(HttpServletRequest request);

    /**
     * 获取详情信息
     *
     * @param id
     * @return
     */
    ExtTestCaseInfoEntity getDetailInfo(Integer id);

    /**
     * 正在执行的，全部停掉
     */
    void stopAllExecuting();

    /**
     * 验证Jmeter是否安装,可使用
     *
     * @return
     */
    String checkJmeterReady() throws Exception;

    /**
     * 验证PhantomJs是否安装,可使用
     *
     * @return
     */
    String checkPhantomJsReady() throws Exception;

}
